﻿We@{
    var calendar = Page.Calendar;
    RequestData.SetValue("InfoPaneTitle", "공유 관리 대상: " + calendar.Name);
    var users = Sharing.GetUsersWithAccess(calendar.CalendarId);

    if (IsPost) {
        // 사용자를 추가합니다.
        var email = Request["email"];
        if (email.IsEmpty()) {
            ModelState.AddError("email", "사용자 이름을 지정해야 합니다.");
        } else if (!UserHelper.UserExists(email)) {
            //  사용자가 존재하는지 확인
            ModelState.AddError("email", "해당 사용자 이름을 가진 사용자가 존재하지 않습니다.");
        } else if (email == UserHelper.CurrentUser.Email) {
            ModelState.AddError("email", "자신과 달력을 공유할 수 없습니다.");
        }

        foreach (var user in users) {
            if (user.Email == email) {
                ModelState.AddError("email", "해당 사용자는 이미 달력에 액세스할 수 있습니다.");
            }
        }

        var permission = Request["permission"];
        Permission result = Permission.View;

        if (permission.IsEmpty()) {
             ModelState.AddError("permission", "권한 수준을 지정해야 합니다.");
        } else if (!Enum.TryParse<Permission>(permission, out result)) {
            //  지정된 권한 수준 확인
            ModelState.AddError("permission", "유효한 권한 수준을 지정해야 합니다.");
        }

        if (ModelState.IsValid) {
            Sharing.ShareCalendar(calendar.CalendarId, WebSecurity.GetUserId(email), result);
            Response.Redirect("~/Calendar/Share/View/"+calendar.CalendarId);
        }
    }
}
@Html.ValidationSummary()
<form method="post" action="">
    <table class="info">
        <tr>
            <th scope="col">전자 메일</th>
            <th scope="col">권한 수준</th>
            <th></th>
        </tr>
        <tr>
            <td>
                <label>
                    <span style="margin-right: 1em">사용자 추가:</span>
                    <input type="text" name="email" value="" />
                </label>
            </td>
            <td>
                <select name="permission">
                    @foreach (var level in Enum.GetValues(typeof(Permission))) {
                        <option value="@((int)level)">@level</option>
                    }
                </select>
            </td>
            <td><input type="submit" value="추가" /></td>
        </tr>
        @foreach (var user in users) {
            // 공유하는 사용자를 표시하지 않습니다. 이렇게 하면 공유 사용자들이 스스로를 제거할 수 없습니다.
            if (user.Email == Page.User.Email) {
                continue;
            }
        <tr>
            <td>@user.Email</td>
            <td>@((Permission)user.Permissions)</td>
            <td> <a href="@Href("~/Calendar/Share/Edit", calendar.CalendarId, user.Id)" title="달력 편집">권한 변경</a></td>
        </tr>
        }
    </table>
</form>

